In today's information age, it is typical for computers and computer peripherals to be internetworked over a communication network. The communication network typically includes a plurality of communication links that are interconnected through a number of intermediate devices, such as bridges, routers, or switches. Information sent by a source device to a destination device traverses one or more communication links.
The various communication devices in the communication network, including the computers, computer peripherals, and intermediate devices, utilize various communication protocols in order to transport the information from the source device to the destination device. The communication protocols are typically implemented in layers, which together form a protocol stack. Each protocol layer provides a specific set of services to the protocol layer immediately above it in the protocol stack. Although there are different protocol layering schemes in use today, the different protocol layering schemes have certain common attributes. Specifically, protocols at the lowest layer in the protocol stack, which are typically referred to as the “layer 1” or “physical layer” protocols, define the physical and electrical characteristics for transporting the information from one communication device to another communication device across a single communication link. Protocols at the next layer in the protocol stack, which are typically referred to as the “layer 2” or “Medium Access Control (MAC) layer” protocols, define the protocol message formats for transporting the information across the single communication link by the physical layer protocols. Protocols at the next layer in the protocol stack, which are typically referred to as the “layer 3” or “network layer” protocols, define the protocol message formats for transporting the information end-to-end from the source device to the destination device across multiple communication links. Higher layer protocols ultimately utilize the services provided by the network protocols for transferring information across the communication network.
Each intermediate device supports multiple communication links, and forwards protocol messages between communication links. Some intermediate devices forward protocol messages based upon layer 2 addresses, while other intermediate devices forward protocol messages based upon layer 3 addresses. An intermediate device that forwards protocol messages based upon layer 2 addresses is often referred to as a bridge or switch, while an intermediate device that forwards protocol messages based upon layer 3 addresses is often referred to as a router.
One common networking application, referred to as “multicasting,” allows an information provider (referred to hereinafter as a “multicast source”) to transmit a single unit of multicast information (referred to hereinafter as a “multicast packet”) simultaneously to a group of information consumers (referred to hereinafter as the “multicast group”), specifically by addressing the multicast packet to the multicast group using a multicast address. The multicast group members monitor the communication network for multicast packets addressed to the multicast group.
In a communication network that supports Internet Protocol (IP) multicasting, multicasting is supported at layer 3 of the protocol stack. The multicast address is a layer 3 address, and the various routers in the communication network forward multicast packets using the layer 3 address according to a multicast routing protocol.
When a layer 2 device needs to forward a multicast packet, the layer 2 device may treat the multicast packet as a broadcast, in which case the layer 2 device forwards the multicast packet to all communication links that it supports (other than the communication link over which the multicast packet was received). Such broadcasting of the multicast packet may generate unnecessary network traffic, particularly when multicast streams are not supported by all communication links. Therefore, the layer 2 device preferably determines which communication links support multicast streams, and selectively forwards the multicast packet only to those communication links that support multicast streams. Such selective forwarding of the multicast packet avoids unnecessary network traffic.
One way for the layer 2 device to determine which communication links support multicast streams is by monitoring Internet Group Management Protocol (IGMP) messages received from each of the communication links. IGMP is a protocol that is used by multicast devices to control membership in multicast groups. Using IGMP, a multicast device can join a multicast group or leave a multicast group. IGMP messages are layer 3 protocol messages that identify multicast devices (i.e., hosts and routers) on the communication link. Even though the IGMP messages are layer 3 messages, the layer 2 device is able to receive and process the IGMP messages in order to determine whether or not there are any active multicast devices on a particular communication link. Such monitoring of IGMP messages is referred to hereinafter as IGMP “snooping.”
To further reduce unnecessary network traffic, the layer 2 device may forward a single IGMP report on behalf of all connected multicast hosts for a particular multicast group and suppress any additional IGMP reports for the same multicast group. When a multicast device generates an IGMP query for the multicast group, the layer 2 device may receive IGMP reports from all connected multicast hosts. Since only one IGMP report is needed to indicate that the multicast group is active (i.e., that the multicast group has at least one member), the layer 2 device forwards only one of the IGMP reports and suppresses the other IGMP reports. Such forwarding and suppressing of IGMP reports is referred to hereinafter as IGMP “proxy.”
Because layer 2 devices are utilized in a wide range of applications, some layer 2 devices utilize a modular design that enables a number of modules to be interconnected in a stack configuration such that the number of interconnected modules interoperate in a cooperating mode of operation to form a single virtual device. Each module is capable of operating independently as a stand-alone device or in a stand-alone mode of operation, and therefore each module, is a complete system unto itself. Each module typically includes a number of network interfaces for supporting directly connected communication links as well as an inter-module communication interface for interfacing with the other modules in the stack.
The modular design approach enables the layer 2 device to be scalable, such that modules can be added and removed to fit the requirements of a particular application. However, the modular design approach also complicates IGMP snooping and IGMP proxy functions. Specifically, when a number of modules are interconnected in a cooperating mode of operation, it is possible for multicast group members on different communication links to be supported by different modules of the layer 2 device.